StringManipulation Module

History

current version 1.3 - 14th November 2017

version date comment
1.0 15/Sep/2008 Original code
1.1 17/Jun/2013 Check for proper conversion from string to number
1.2 24/Oct/2017 Added TabToSpace function
1.3 14/Nov/2017 Added ReplaceChar

License

license: GNU GPL http://www.gnu.org/licenses/

This file is part of

MOSAICO -- MOdular library for raSter bAsed hydrologIcal appliCatiOn.

Copyright (C) 2011 Giovanni Ravazzani

Module Description

Module for simple string manipulations

References and Credits: Adapted from flibs library http://flibs.sourceforge.net written by Arjen Markus and string utilities http://www.gbenthien.net/strings/index.html written by Dr. George Benthien



Variables

Type Visibility Attributes Name Initial
character(len=26), private, parameter :: lower = 'abcdefghijklmnopqrstuvwxyz'
character(len=26), private, parameter :: upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

Interfaces

public interface ToString

  • private function DoubleToString(number, fmt) result(string)

    Converts a double precision number in a string Arguments: number number to be converted Result: string

    Arguments

    Type IntentOptional Attributes Name
    real(kind=double), intent(in) :: number
    character(len=*), intent(in), optional :: fmt

    Return Value character(len=100)

  • private function FloatToString(number, fmt) result(string)

    Converts a real number in a string Arguments: number number to be converted Result: string

    Arguments

    Type IntentOptional Attributes Name
    real(kind=float), intent(in) :: number
    character(len=*), intent(in), optional :: fmt

    Return Value character(len=100)

  • private function LongToString(number, fmt) result(string)

    Converts a long integer number in a string Arguments: number number to be converted Result: string

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=long), intent(in) :: number
    character(len=*), intent(in), optional :: fmt

    Return Value character(len=100)

  • private function ShortToString(number, fmt) result(string)

    Converts a short integer number in a string Arguments: number number to be converted Result: string

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=short), intent(in) :: number
    character(len=*), intent(in), optional :: fmt

    Return Value character(len=100)


Functions

public function ReplaceChar(string, char, rep) result(outstring)

char is replaced with rep

Arguments

Type IntentOptional Attributes Name
character(len=*) :: string
character(len=1) :: char
character(len=1) :: rep

Return Value character(len=LEN(string))

public function StringCompact(string) result(new)

Converts multiple spaces and tabs to single spaces; deletes control characters; removes initial spaces. Arguments: string String to be treated Result: String compacted

Arguments

Type IntentOptional Attributes Name
character(len=*) :: string

Return Value character(len=LEN)

public function StringReverse(string) result(rev)

Return a string that has all characters in reverse order Arguments: string String to be reversed Result: Reversed string

Arguments

Type IntentOptional Attributes Name
character(len=*) :: string

Return Value character(len=LEN)

public function StringToDouble(string, error) result(number)

Converts number string to a double precision real number Arguments: string String to be converted Result: double precision real number

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: string
logical, intent(out), optional :: error

Return Value real(kind=double)

public function StringToFloat(string, error) result(number)

Converts number string to a real number Arguments: string String to be converted Result: float number

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: string
logical, intent(out), optional :: error

Return Value real(kind=float)

public function StringToLong(string, error) result(number)

Converts number string to a long integer Arguments: string String to be converted Result: long integer

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: string
logical, intent(out), optional :: error

Return Value integer(kind=long)

public function StringToLower(string) result(new)

! Description: Return a string that has all letters in lower case Arguments: string String to be treated Result: String with letters turned into lower case

Arguments

Type IntentOptional Attributes Name
character(len=*) :: string

Return Value character(len=LEN)

public function StringToShort(string, error) result(number)

Converts number string to a short integer Arguments: string String to be converted Result: short integer

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: string
logical, intent(out), optional :: error

Return Value integer(kind=short)

public function StringToUpper(string) result(new)

Return a string that has all letters in upper case Arguments: string String to be treated Result: String with letters turned into upper case

Arguments

Type IntentOptional Attributes Name
character(len=*) :: string

Return Value character(len=LEN)

public function TabToSpace(string) result(out)

Tab character is substituted by one blank character Arguments: string String to be processed Result: processed string

Arguments

Type IntentOptional Attributes Name
character(len=*) :: string

Return Value character(len=LEN)

private function DoubleToString(number, fmt) result(string)

Converts a double precision number in a string Arguments: number number to be converted Result: string

Arguments

Type IntentOptional Attributes Name
real(kind=double), intent(in) :: number
character(len=*), intent(in), optional :: fmt

Return Value character(len=100)

private function FloatToString(number, fmt) result(string)

Converts a real number in a string Arguments: number number to be converted Result: string

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: number
character(len=*), intent(in), optional :: fmt

Return Value character(len=100)

private function LongToString(number, fmt) result(string)

Converts a long integer number in a string Arguments: number number to be converted Result: string

Arguments

Type IntentOptional Attributes Name
integer(kind=long), intent(in) :: number
character(len=*), intent(in), optional :: fmt

Return Value character(len=100)

private function ShortToString(number, fmt) result(string)

Converts a short integer number in a string Arguments: number number to be converted Result: string

Arguments

Type IntentOptional Attributes Name
integer(kind=short), intent(in) :: number
character(len=*), intent(in), optional :: fmt

Return Value character(len=100)


Subroutines

public subroutine StringSplit(delims, string, before, sep)

Finds the first instance of a character from 'delims' in the the string 'string'. The characters before the found delimiter are output in 'before'. The characters after the found delimiter are output in 'string'. The optional output character 'sep' contains the found delimiter. Arguments: string String to be treated Result: The characters before the found delimiter, the remainder is output in string

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: delims
character(len=*), intent(inout) :: string
character(len=*), intent(out) :: before
character(len=*), intent(out), optional :: sep

public subroutine StringTokenize(string, delims, args, nArgs)

It is often useful to represent a text as a list of tokens. The process of breaking a text up into its constituent tokens is known as tokenization. The subroutine parses the string in input into arguments args(1), ..., args(nargs) based on the delimiters contained in the string delims. Preceding a delimiter in string by a backslash \ makes this particular instance not a delimiter. The integer output variable nArgs contains the number of arguments found.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: string
character(len=*), intent(in) :: delims
character(len=*), POINTER :: args(:)

local copy of string to tokenize

integer(kind=short), intent(out) :: nArgs